package com.weixing.mall.provider.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.weixing.mall.provider.api.model.query.ActGoodsQuery;
import com.weixing.mall.provider.api.model.query.ErpGoodsQuery;
import com.weixing.mall.provider.api.model.vo.ActivityProductVo;
import com.weixing.mall.provider.api.model.vo.ErpProductVo;
import com.weixing.mall.provider.api.model.vo.GoodsPlaceVo;
import com.weixing.mall.provider.api.model.vo.ItemVo;
import com.weixing.mall.provider.model.domain.Product;
import com.weixing.mall.provider.model.dto.GoodsIdProductSkuDto;
import com.weixing.mall.provider.model.dto.ProductSpecDto;
import com.weixing.mall.provider.model.query.ProductQuery;
import com.weixing.mall.provider.model.vo.ProductSpecVo;
import com.weixing.mall.provider.model.vo.SkuVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 商品模块-货品表 服务类
 * </p>
 *
 * @author Small
 * @since 2019-11-20
 */
public interface IProductService extends IService<Product> {


    ProductSpecVo selectByGoodsId(Long goodsId);

    void save(ProductSpecDto productSpecDto);

    List<ActivityProductVo> findActProductVoByIds(long[] productIds);

    List<ActivityProductVo> findActProductVo(ActGoodsQuery goodsQuery);

    IPage<ActivityProductVo> findActProductVo(Page page, ActGoodsQuery goodsQuery);

    IPage<ErpProductVo> getErpGoodsList(Page page, ErpGoodsQuery egq);

    @Deprecated
    ItemVo selectProduct(GoodsIdProductSkuDto goodsIdProductSkuDto);

    List<ItemVo> selectProduct(ProductQuery productQuery);
    IPage<ItemVo> selectProduct( Page page, ProductQuery productQuery);
    ItemVo findProductVoByProductSn(String productSn);

    Product selectByProductSn(String productSn);

    IPage<ActivityProductVo> findProductVoByCreatedId(Page page,Long  createdById);

    List<ItemVo> findProductList(String productSn);

    List<Product> findByGoodsId(Long goodsId);

    List<Product> selectByGoodsIds(Long[] goodsIds);

    String test();

    List<ItemVo> getCheckAll();

    Map<String, List<SkuVo>> getSkuListByGoodId(Long goodId);


    List<ItemVo> linshi();

    GoodsPlaceVo findGoodsByProductSn(String productSn);

    String initImag();
}
